// Package config
// @Title config[简述该包的主要作用]
// @Description
// @Author  cnHuaShao
// @since v0.0.1
// @Version v1.0.0
// @Date 2024/4/21 22:23
// @Update 2024/4/21 22:23
package config

import (
	_ "embed"
	"time"
)

var config = new(Config)

// Config
// @Description: 系统配置结构体
type Config struct {
	Base struct {
		Version     string `toml:"version"`     // 系统版本号
		UrlPosition string `toml:"urlPosition"` // 创建的所有API访问时路由追加的默认标记
		Domain      string `toml:"domain"`      // cookie中的domain
		WebUrl      string `toml:"webUrl"`      // 前端页面
	} `toml:"base"`

	Log struct {
		Level       string `toml:"level"`       // 日志级别
		Filename    string `toml:"filename"`    // 日志存放目录和其文件名称
		ErrFilename string `toml:"errFilename"` // 错误日志存放目录和文件名称
		MaxSize     int    `toml:"maxSize"`     // 最大M数，超过则切割
		MaxAge      int    `toml:"maxAge"`      // 保存30天
		MaxBackups  int    `toml:"maxBackups"`  // 最大文件保留数，超过就删除最老的日志文件
		Compress    bool   `toml:"compress"`    // 是否压缩
		Encoding    string `toml:"encoding"`    //
	} `toml:"log"`

	//
	//  Web
	//  @Description: 主配置
	//
	Web struct {
		Host string `toml:"host"`
		Port string `toml:"port"`
	} `toml:"web"`

	//
	//  MySQL
	//  @Description: MySQL数据库结构体，mariadb
	//
	MySQL struct {
		Read struct {
			Addr string `toml:"addr"`
			User string `toml:"user"`
			Pass string `toml:"pass"`
			Name string `toml:"name"`
		} `toml:"read"`
		Write struct {
			Addr string `toml:"addr"`
			User string `toml:"user"`
			Pass string `toml:"pass"`
			Name string `toml:"name"`
		} `toml:"write"`
		Base struct {
			MaxOpenConn     int           `toml:"maxOpenConn"`
			MaxIdleConn     int           `toml:"maxIdleConn"`
			ConnMaxLifeTime time.Duration `toml:"connMaxLifeTime"`
		} `toml:"base"`
	} `toml:"mysql"`
}

// Get
// @Description: 获取配置对象
// @return Config
// @author zhangyc
func Get() Config {
	return *config
}
